package praktikum_I.blatt_I.aufgabe2;


public class Node_Impl<E> implements Node_inter<E> {


    private E elem;
    private Node_inter<E> next;

    //////////       ////////
    //    Konstruktoren    //
    /////////       /////////

    public Node_Impl(E aElem){
        elem = aElem;
        next = null;
    }

    public Node_Impl(E aElem, Node_inter<E> aNext){
        elem = aElem;
        next = aNext;
    }

    public Node_Impl(){
        this(null, null);
    }



    /**
     * Gibt das naechste Element, von dem aktuell
     * ausgewaehlten, zurueck
     */
    public Node_inter<E> getNext(){
        return next;
    }

    /**
     * Setzt das uebergebene Element vom Typ Node,
     * als naechstes Objekt des aktuell ausgewahlten
     * @param aNext
     */
    public void setNext(Node_inter<E> aNext){
        next = aNext;
    }

    /**
     * Gibt das Node Element zurueck
     */
    public E getElem() {
        return elem;
    }

    /**
     * Setzt das uebergebene Node Element an der
     * aktuellen Position
     * @param elem
     */
    public void setElem(E elem) {
        this.elem = elem;
    }

    /**
     * Gibt eine Stringrepraesentation des Node-Objektes
     * auf der Konsole aus
     */
    public String toString(){
       return "[Elem: " + elem + " |  Next: " + next+ " ]";
    }


}
